SQL基础

您所在的位置:网站首页 sql基础教程 mick pdf SQL基础

SQL基础

2023-03-04 17:37| 来源: 网络整理| 查看: 265

一:SQL通用语法

1:SQL 语句可以单行或多行书写,以分号结尾。 2:可使用空格和缩进来增强语句的可读性。 3:MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。 4: 注释 * 单行注释: – 注释内容 或 # 注释内容(mysql 特有) * 多行注释: /* 注释 */

二:SQL分类

在这里插入图片描述

三:DDL 1:数据库操作

A:创建数据库: create database 【if not exists】 数据库名 【default charset 字符集】【collate 排序规则】; B:查询数据库: a:查询所有数据库: show databases; b:查询当前数据库: select database(); C:使用数据库 use 数据库名称; D:删除数据库 drop database 【if exists】数据库名称; 在这里插入图片描述

2:表操作

A:查询 a:查看当前数据库所有表 show tables; b:查询表结构 desc 表名; c:查询指定表的建表语句 show create table 表名; B:创建 create table 表名( 字段1 字段1类型【comment 字段1注释】, 字段2 字段2类型【comment 字段2注释】, 字段3 字段3类型【comment 字段3注释】, ------ 字段n 字段n类型【comment 字段n注释】 )【comment 表注释】; 在这里插入图片描述 C:修改 添加字段 alter table 表名 ADD 字段名 类型(长度) 【comment 注释】【约束】; 修改数据类型 alter table 表名 modify 字段名 新数据类型(长度); 修改字段名和字段类型 alter table 表名 change 旧字段名 新字段名 类型(长度) 【comment 注释】【约束]; 修改表名 alter table 表名 rename to 新表名; 删除字段 alter table 表名 drop 字段名; D:修改 删除表 drop table 【if exists】表名; 删除指定表。并重新创建该表(用得较少) truncate table 表名; 在这里插入图片描述 在这里插入图片描述

3:数据类型

mysql中数据类型较多,主要分为三类:数值类型,字符串类型,日期时间类型。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

例如设计一张表,要求如下: 1:编号(纯数字) 2:员工工号(字符串类型,长度不超过10位) 3:员工姓名(字符串类型,长度不超过10位) 4:性别(男/女,存储一个汉字) 5:年龄(正常人年龄,不可能存储负数) 6:身份证号(二代身份证号均为18位,身份证中有x这样的字符) 7:入职时间(取值年月日即可) create table emp( id int comment "编号", workid varchar(10) comment "工号", name varchar(10) comment "姓名", gender char(1) comment "性别", age tinyint unsigned comment "年龄", idcard char(18) comment "身份证号码", entrydate date comment "入职时间" ) comment "员工表"; 四:DML

(为了便于自己操作,可以直接使用相关的数据库管理工具,在此我是用的是DBeaver)

1:添加数据

A:给指定字段添加数据 insert into 表名(字段1,字段2,…)values (值1,值2,…); B:给全部字段添加数据 insert into 表名 values (值1,值2,…); C:批量添加数据 insert into 表名(字段1,字段2,…)values (值1,值2,…),(值1,值2,…),(值1,值2,…); insert into 表名 values (值1,值2,…),(值1,值2,…);

注意: 1:插入数据时,指定的字段顺序需要与值的顺序是一一对应的。 2:字符串和日期型数据应该包含在引号中。 3:插入的数据大小应该在字段的规定范围内。 2:修改数据

update 表名 set 字段名1=值1,字段名2=值2,…[where 条件];

注意:如果不加条件,则表示更新整张对对应字段的值 3:删除数据

delete from 表名 [where 条件]

注意: 1:delete语句不能删除某一个字段的值(可以使用update) 2:delete语句的条件可以有,也可以没有,如果没有,则会删除整张表的所有数据。 在这里插入图片描述在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五:DQL

在这里插入图片描述

1:查询

A:查询多个字段 select 字段1,字段2,字段3… from 表名; select * from 表名;(查询返回所有字段) B:设置别名 select 字段1 【as 别名1】,字段2 【as 别名2】… from 表名; C:去除重复记录 select distinct 字段列表 from 表名; 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 D:条件查询 select 字段列表 from 表名 where 条件列表 条件: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 补充: 聚合函数:将一列数据作为一个整体,进行纵向计算。 常见聚合函数: 在这里插入图片描述 注:所有的null值不参与聚合函数运算。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 E:分组查询 select 字段列表 from 表名 【where 条件】 group by 分组字段名 【having 分组后过滤条件】

注: 执行顺序: where>聚合函数>having 分组之后,查询的字段一般为聚合函数或者分组字段,查询其他字段无意义(随机的)。 where与having的区别 where 是在分组前进行过滤,不满足where条件的不参与分组,having是在分组后对结果进行过滤,where不能对聚合函数进行判断,而having可以。

在这里插入图片描述 F:排序查询 select 字段列表 from 表名 order by 字段1 排序方式1,字段1,排序方式2; 排序方式: 默认升序(asc),降序(desc) 注: 如果是多字段排序,当第一个字段相同时,才会进行第二个字段排序 select G:分页查询 select 字段列表 from 表名 limit 起始索引,查询记录数; 注:若起始索引从0开始可以省略,起始索引=(查询页码-1)*每页显示记录数,起始索引最小为0。 分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit。 在这里插入图片描述 综合条件查询 在这里插入图片描述 在这里插入图片描述 DQL的执行顺序和编写顺序 在这里插入图片描述

六:DCL 1:管理用户 主要用于管理数据库用户,控制数据库的访问权限。(此节不做过多介绍) A:查询用户 use mysql; select * from user; B:创建用户 create user "用户名"@"主机名" identified by "密码"; C:修改用户密码 alter user "用户名"@"主机名" identified with mysql_native_password by "新密码"; D:删除用户 drop user "用户名"@"主机名"; 注: 主机名可以使用%通配 2:权限控制

常见权限如下: 在这里插入图片描述 A:查询权限 show grants for “用户名”@“主机名”; B:授予权限 grant 权限列表 on 数据库名.表名 to “用户名”@“主机名”; C:撤销权限 revoke 权限列表 on 数据库名.表名 from “用户名”@“主机名”;

注: 1:多个权限之间使用逗号分隔 2:授权时,数据库名和表名可以使用*进行通配,代表所有。

三:函数 1:字符串函数

常见字符串函数: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 如对下表的工号统一修改为5位数,不足5位的在前面补0; 在这里插入图片描述 在这里插入图片描述

2:数值函数

常见数值函数 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

3:日期函数

常见日期函数: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

4:流程函数 可以在SQL中实现条件筛选,从而提高语句的效率。 **常见流程函数**

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 如下所示,如果地址为北京、上海、广州时返回“一线城市”,否则返回二线城市 在这里插入图片描述 在这里插入图片描述

四:约束

概念:

约束是作用在表中字段上的规则,用于限制存储在表中的数据,保证数据库中数据的正确、有效性和完整性。

分类: 在这里插入图片描述

在这里插入图片描述

1:外键约束

用来让两张表之间的数据建立连接,从而保证数据的一致性和完整性 A:添加外键:

create table 表名( 字段名 数据类型, ... [constraint] [外键名称] foreign key (外键字段名)references 主表(主表列名) );

或者:

alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名);

B:删除外键:

alter table 表名 drop foreign key 外键名称;

在这里插入图片描述 以此执行上述命令: 在这里插入图片描述 在这里插入图片描述

五:多表查询 1:多表关系

A:一对多 在多的一方建立外键,指向一的一方的主键 B:多对多 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键 C:一对一 在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(unique)。

2:多表查询

A:连接查询 a:内连接:相当于查询A、B交集部分数据 隐式内连接: select 字段列表 from 表1,表2 where 条件 …; 显式内连接(只是表达形式上的差别,和隐式内连接效果差不多,可能有速度上的其别): select 字段列表 from 表1 [inner] join 表2 on 连接条件 …; b:外连接: 左外连接:查询左表所有数据,以及两张表交集部分数据。 select 字段列表 from 表1 left [outer] join 表2 on 条件…; 右外连接:查询右表所有数据,以及两张表交集部分数据 select 字段列表 from 表1 right [outer] join 表2 on 条件…; 自连接:当前表与自生的连接查询,自连接必须使用表别名 例如:查询emp表中员工及其所属领导的名字: emp表:managerid中的数字为该员工所属领导的id在这里插入图片描述 查询语句及结果如下: 注意:因为是同一个表,所以一定要另外别名。 在这里插入图片描述 如要该员工没有对应领导(自己是领导)也需查询出来,可用下面语句: 在这里插入图片描述

B:联合查询-union,union all

对于union查询,就是将多次查询的结果合并起来,形成一个新的查询结果集 select 字段列表 from 表A ... union [all] select 字段列表 from 表B ...; 注:对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。union all会将全部数据直接合并在一起,union会对合并之后的数据去重。

emp: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 注:union取得是并集而不是交集。 在这里插入图片描述 在这里插入图片描述 C:子查询 sql语句中嵌套select语句,称为嵌套语句,又称子查询 select * from t1 where column1 =(select column1 from t2); 子查询外部的语句可以是insert/update/delete/select的任何一个。

(1):根据子查询位置,分为:where之后、from之后、select之后。 (2):根据子查询结果不同,可分为: A:标量子查询(结果为单个值) 常用操作符:=,,>,>=,


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3